<template>
  <div class="person">
    <h1>需求：水温达到50℃，或水位达到20cm，则联系服务器</h1>
    <h2 id="demo">水温：{{temp}}</h2>
    <h2>水位：{{height}}</h2>
    <button @click="changeTemp">水温+10</button>
    <button @click="changeHeight">水位+10</button>
  </div>
</template>

<script lang="ts">
export default {
  name: 'Person',
}
</script>

<script lang="ts" setup>
import { ref, reactive,watchEffect , watch } from 'vue'
// 数据
  let temp = ref(0)
  let height = ref(0)

  // 方法
  function changeTemp(){
    temp.value += 10
  }
  function changeHeight(){
    height.value += 10
  }

  // 用watch实现，需要明确的指出要监视：temp、height
  // watch([temp,height],(value)=>{
  //   // 从value中获取最新的temp值、height值
  //   const [newTemp,newHeight] = value
  //   // 室温达到50℃，或水位达到20cm，立刻联系服务器
  //   if(newTemp >= 50 || newHeight >= 20){
  //     console.log('联系服务器 发送请求。 ',newTemp,newHeight)
  //   }
  // })



  // // 用watchEffect实现，不用
  // watchEffect 立即执行 ，自动收集依赖 
  const stopWtach = watchEffect(()=>{
    // console.log(
    //   'haha'
    // )
    // 室温达到50℃，或水位达到20cm，立刻联系服务器
    if(temp.value >= 50 || height.value >= 20){
      console.log(document.getElementById('demo')?.innerText)
      console.log('联系服务器')
    }
    // 水温达到100，或水位达到50，取消监视
    if(temp.value === 100 || height.value === 50){
      console.log('清理了')
      stopWtach()
    }
  })


</script>

<style scoped>
.person {
  background-color: skyblue;
  box-shadow: 0 0 10px;
  border-radius: 10px;
  padding: 20px;
}

button {
  margin: 0 5px;
}

li {
  font-size: 20px;
}
</style>